package unq.model

import java.util.ArrayList
import java.util.List
import org.uqbar.commons.model.ObservableUtils
import org.uqbar.commons.utils.Observable
import java.io.Serializable

@Observable
class Villano extends Ocupante implements Serializable{
	@Property String nombre
	@Property List<String> seniasParticulares = new ArrayList 
	@Property List<String> hobbies = new ArrayList
	@Property Sexo sexo
	@Property int proximoPais
	@Property String proximaSenia = ""
	@Property String proximoHobbie = ""
	@Property List posibleSexo= #[Sexo.FEMENINO.name, Sexo.MASCULINO.name]
	new(Caso c, Lugar l) {
		this.caso = c
		this.lugar = l
	}
	new() {
	}
	new(Caso c,List<String> s, List<String> h) {
		caso = c
		_proximoPais = 0;
		_seniasParticulares = s
		_hobbies = h
	}
	new(String nombre, List<String> s, List<String> h) {
		_nombre = nombre
		_proximoPais = 0;
		_seniasParticulares = s
		_hobbies = h
	}
	def agregarSenia(String senia) {  
		this.seniasParticulares.add(senia)
		ObservableUtils.firePropertyChanged(this, "seniasParticulares", seniasParticulares)
	}
	def agregarSenia()
	{
		this.seniasParticulares.add(proximaSenia)
		proximaSenia = ""
	}
	
	def agregarHobbie()
	{
		this.hobbies.add(proximoHobbie)
		proximoHobbie = ""
	}
	
	def eliminarSenia(String senia) {
		this.seniasParticulares.remove(senia)
		ObservableUtils.firePropertyChanged(this, "seniasParticulares", seniasParticulares)
	}
	def agregarHobbie(String hobbie) {
		hobbies.add(hobbie)
		ObservableUtils.firePropertyChanged(this, "hobbies", hobbies)
	}
	def eliminarHobbie(String hobbie) {
		this.hobbies.remove(hobbie)
		ObservableUtils.firePropertyChanged(this, "hobbies", hobbies)
	}
	override actuar() {
		var List<String> msj = new ArrayList()
		if (caso.ordenDeArresto == nombre) {
			caso.estado = EstadoJuego.CERRADO 
			msj.add("Alto!!")
			msj.add(caso.ordenDeArresto)
 			msj.add("\n")
 			msj.add("\n")
 			msj.add("Oh no, me atrapaste")
 			
		} else {
			caso.estado = EstadoJuego.IMPUNE
			msj.add("usted tenia una orden")
			msj.add("\n")
			msj.add("de arresto para: ")
			msj.add("\n")
			msj.add(caso.ordenDeArresto)
			
		}
		msj
	}
 
}
